package com.un.ebs.businessObject.service;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.un.ebs.core.metadata.Query;

import java.util.Map;

/**
 * @Author zc
 * @ClassName DbService
 * @Description dbserver
 * @Date 2021/1/12
 */
public interface DbService {
	/**
	 * 查询列表
	 *
	 * @param bo       业务实体对象code
	 * @param sortName 排序字段
	 * @param params   查询参数
	 * @return
	 */
	JSONArray list(String bo, String sortName, Map<String, Object> params);

	/**
	 * 分页查询列表
	 *
	 * @param bo        业务实体对象code
	 * @param sortName  排序字段
	 * @param pageIndex 页码
	 * @param pageSize  分页大小
	 * @param params    查询参数
	 * @return
	 */
	Page pageList(String bo, String sortName, Integer pageIndex, Integer pageSize, Map<String, Object> params);

	/**
	 * 根据ID查询对象
	 *
	 * @param bo 业务实体对象code
	 * @param id 查询ID
	 * @return
	 */
	JSONObject getById(String bo, String id);

	/**
	 * 根据ID查询复合对象
	 * @param bo 业务实体对象code（tableid）
	 * @param id 查询ID
	 * @return
	 */
	JSONObject getComplexObjectById(String bo, String id);

	/**
	 * 新增
	 *
	 * @param bo   业务实体对象code
	 * @param json 新增内容对象
	 * @return
	 */
	JSONObject add(String bo, JSONObject json);

	/**
	 * 新增（复合类型）
	 *
	 * @param bo   业务实体对象code（tableid）
	 * @param json 新增内容对象
	 * @return
	 */
	JSONObject addComplexObject(String bo, JSONObject json);

	/**
	 * 修改
	 *
	 * @param bo   业务实体对象code
	 * @param json 修改内容对象
	 * @return
	 */
	JSONObject update(String bo, JSONObject json);

	/**
	 * 更新（复合类型）
	 *
	 * @param bo   业务实体对象code
	 * @param json 新增内容对象
	 * @return
	 */
	JSONObject updateComplexObject(String bo, JSONObject json);

	/**
	 * 删除
	 *
	 * @param bo 业务实体对象code
	 * @param id id
	 * @return
	 */
	JSONObject delete(String bo, String id);

	/**
	 * 通用查询
	 *
	 * @param query
	 * @return
	 */
	Page query(Query query);
}
